package com.qqla.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.Map;

public class JwtUtils {

    // 生成jwt令牌方法
    public static String createJwt(String secretKey, Long ttlMillis, Map<String,Object> claims) {
        // 加密算法
        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS512;

        // token过期时间
        Date time = new Date(System.currentTimeMillis() + ttlMillis);

        String token = Jwts.builder()
                .signWith(signatureAlgorithm, secretKey.getBytes(StandardCharsets.UTF_8))
                .setClaims(claims)
                .setExpiration(time)
                .compact();
        return token;
    }


    // 解析jwt token
    public static Claims parseJwt(String secretKey, String token) {

        Claims body = Jwts.parser()
                .setSigningKey(secretKey.getBytes(StandardCharsets.UTF_8))
                .parseClaimsJws(token)
                .getBody();

        return body;
    }

}
